const { escape, unescape } = require("querystring");

// 注意一下这里的变化
console.log(typeof Array);// function
console.log(typeof {});// object
// 为什么会有这样的变化呢？
//typeof 是根据object对象上定义的一个方法[[call]]来进行判断的。
//如果有call方法，返回的则是function，否则就是object。


// typeof 第二个注意到事项
var str="xiaoyu";
console.log(typeof str);// string
str=new String("xiaoyu");// 实例化后的对象 {} key:value  0:x,1:i,2:a,3:o
console.log(typeof str);// object


//类型转换
/**
 * js toPrimitive(input,type) input:传入的值。 type:值类型 
 * 1.input 判断是不是原始类型的值，是就直接返回
 * 2.不是：input.valueOf(). 是原始类型，直接返回
 * 3.还不是：input.toString() :string是原始类型，直接返回
 * 4.报错！
*/
console.log([]+[]);// ""
console.log([]+{});// [object Object]

//注意的点：
console.log(+[]);//0

// -------------------------------
// Date对象需要注意的点：
var now = new Date()
console.log(now.getTime());//1970 1 1 0 至今的一个毫秒数
console.log(now.getDay());// 本周的第几天。1-7
console.log(now.getDate());// 本月的第几号
console.log(now.getMonth()+1);// 0-11


// -----------------------------
// 地址的编码和解码 , 浏览器自带的方法
var url='https://www.baidu.com?q=小雨&key=123haha';
// escape() unescape()  ASCII(0-9,a-z)
let es=escape(url)
console.log(es);
console.log(unescape(es));

//encodeURL() decodeURL() Unicode编码
let ec=encodeURI(url);
console.log(ec);
console.log(decodeURI(ec));

//URI子属性
//encodeURICompoent() decodeURIComponent()